import cv2
import numpy as np
import matplotlib.pyplot as plt

# 读取彩色图像
image_path = 'ai_image.webp'
image = cv2.imread(image_path)
if image is None:
    print("Error: Unable to load image.")
    exit()

# 将BGR图像转换为RGB图像（便于显示）
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

# 显示原始图像
plt.figure(figsize=(12, 8))
plt.subplot(2, 2, 1)
plt.title('Original Image')
plt.imshow(image)
plt.axis('off')

# 1. 平均值法（Average Method）
# 计算每个像素的R、G、B分量的平均值
gray_average = np.mean(image, axis=2).astype(np.uint8)
plt.subplot(2, 2, 2)
plt.title('Average Method')
plt.imshow(gray_average, cmap='gray')
plt.axis('off')

# 2. 加权平均值法（Weighted Average Method）
# 使用权重：R:0.299, G:0.587, B:0.114
weights = np.array([0.299, 0.587, 0.114])
gray_weighted = np.dot(image, weights).astype(np.uint8)
plt.subplot(2, 2, 3)
plt.title('Weighted Average Method')
plt.imshow(gray_weighted, cmap='gray')
plt.axis('off')

# 3. 最大值法（Maximum Method）
# 取每个像素的R、G、B分量的最大值
gray_max = np.max(image, axis=2).astype(np.uint8)
plt.subplot(2, 2, 4)
plt.title('Maximum Method')
plt.imshow(gray_max, cmap='gray')
plt.axis('off')

plt.tight_layout()
plt.show()